package struts2.sample07.action;

import org.apache.struts2.config.Result;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.BeanUtils;

import struts2.sample07.mapping.User;

/**
 * 利用者マスタ更新アクション
 */
@Result("user_master_update.jsp")
public class UserMasterUpdateAction {

	private User user;
	
	/** hibernateのセッションファクトリー */
	private SessionFactory sessionFactory;


	/**
	 * 初期表示メソッド
	 */
	public String init(){
		Session dbSession = sessionFactory.openSession();
		
		// データベースから利用者情報を取得
		try{
			dbSession.load(user, user.getId());
		}finally{
			dbSession.close();
		}
		
		return "success";
	}

	
	
	/**
	 * 利用者を追加するメソッド
	 */
	public String update(){
		Session dbSession = sessionFactory.openSession();
		
		try{
			// トランザクション開始
			Transaction transaction = dbSession.beginTransaction();
			
			// データベースから利用者情報を持ってくる
			User entity = (User)dbSession.load(User.class, user.getId());
			// プロパティをコピー
			BeanUtils.copyProperties(user, entity);
			
			// コミット
			transaction.commit();
		}finally{
			dbSession.close();
		}
		
		
		return "success";
	}
	

	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}


	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	
}
